package Day17.intereface_.Six;

/**
 * @author HYHwtx
 * @version 1.0
 * @date 2022/2/24 16:19
 */


/*
继承
小结：当子类继承了父类，就自动的拥有父类的功能
如果子类需要扩展功能，可以通过实现接口的方式扩展
可以理解为实现接口是对Java单继承机制的一种补充

接口和继承解决问题的不同

继承的价值主要在于：解决代码的复用性和可维护性
接口的价值主要在于：设计，设计好各种规范(方法)，让其他类去实现这些方法的，即更加的灵活

接口比继承更加的灵活

接口比继承更加的灵活，继承就是满足is-a的关系，而接口只需满足like-a的关系

接口在一定程度上实现的就是动态绑定机制+接口的规范性
 */
public class ExtendsVsInterface {
    public static void main(String[] args) {
        LittleMonkey wuKong = new LittleMonkey("悟空");
        wuKong.climbing();
        wuKong.flying();
        wuKong.swimming();
    }
}
class Monkey {
    private  String name;

    public Monkey(String name) {
        this.name = name;
    }
    public void climbing() {
        System.out.println(name + "会爬树...");
    }

    public String getName() {
        return name;
    }
}




interface FinishBle{
    void swimming();
}
interface BirdBle{
    void flying();
}
class LittleMonkey extends Monkey implements FinishBle,BirdBle{

    public LittleMonkey(String name) {
        super(name);
    }

    @Override
    public void swimming() {
        System.out.println(getName() + "通过学习，可以像鱼儿一样游泳");
    }

    @Override
    public void flying() {
        System.out.println(getName() + "通过学习，可以像鸟儿一样飞翔");
    }
}